//
// Created by mazaiting on 2021/1/17.
//
#include <stdio.h>
#include "src/linear_list/linear_list_menu.h"
#include "src/stack_queue/stack_queue_menu.h"
#include "src/string/string_menu.h"
#include "src/array/array_menu.h"
#include "src/tree/tree_menu.h"
#include "src/graph/graph_menu.h"
#include "src/search/search_menu.h"
#include "src/sort/sort_menu.h"

int main() {
    // 菜单
    int menu = -1;
    // 是否运行
    Status is_run = TRUE;
    while (is_run) {
        printf("╔═══════════════════════════════════════════════╗\n");
        printf("║                     菜单                      ║\n");
        printf("║ 1: 线性表                                     ║\n");
        printf("║ 2: 栈和队列                                   ║\n");
        printf("║ 3: 字符串                                     ║\n");
        printf("║ 4: 数组                                       ║\n");
        printf("║ 5: 树                                         ║\n");
        printf("║ 6: 图                                         ║\n");
        printf("║ 7: 查找算法                                   ║\n");
        printf("║ 8: 内部排序                                   ║\n");
        printf("║ 0: 退出                                       ║\n");
        printf("║                                               ║\n");
        printf("╚═══════════════════════════════════════════════╝\n");
        printf("请选择功能菜单: ");
        // 将输出的内容从缓冲区刷新出来
        fflush(stdout);
        scanf("%d", &menu);
        switch (menu) {
            case 0:
                // 退出
                is_run = FALSE;
                break;
            case 1:
                // 线性表
                linear_list_run();
                break;
            case 2:
                stack_queue_run();
                break;
            case 3:
                string_run();
                break;
            case 4:
                array_run();
                break;
            case 5:
                tree_run();
                break;
            case 6:
                graph_run();
                break;
            case 7:
                search_run();
                break;
            case 8:
                sort_run();
                break;
            default:
                break;
        }
    }

    return 0;
}
